/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package data;

/**
 *
 * @author
 * PedroLZ
 */
public class Emprestimo
{
	public static final int NUM_PARCELAS_MIN = 1;
	public static final int NUM_PARCELAS_MAX = 18;
	
	private Empregado	solicitante;
	private int			numParcelas = 0;
	private double		juros = 0.0;
	private Dinheiro	valor;

	public Emprestimo() {}

	public Empregado getSolicitante() {
		return solicitante;
	}

	public void setSolicitante(Empregado solicitante) {
		this.solicitante = solicitante;
	}

	public int getNumParcelas() {
		return numParcelas;
	}

	public void setNumParcelas(int numParcelas) {
		this.numParcelas = numParcelas;
	}

	public double getJuros() {
		return juros;
	}

	public void setJuros(double juros) {
		this.juros = juros;
	}

	public Dinheiro getValor() {
		return valor;
	}

	public void setValor(Dinheiro valor) {
		this.valor = valor;
	}
	
	public boolean isNumParcelasEntre( int limInferior, int limSuperior ){
		return( numParcelas >= limInferior && numParcelas <= limSuperior );
	}
	
	public Dinheiro getValorCadaPrestacao() {
		return( valor.getValorVezes( getCF() ) );
	}

	public Dinheiro getValorTotalComJuros() {
		return( getValorCadaPrestacao().getValorVezes( numParcelas ) );
	}

	//-------------------------------------------------------------------------
	// métodos private
	//-------------------------------------------------------------------------	
	private double getCF()
	{
		double cf = ( juros / (1 - (1 / Math.pow( 1.0+juros, numParcelas) ) ) );
		return( cf );
	}
}
